
// 不能直接引入，由于good-storage库是浏览器端代码，
// 会使用到window对象，在ssr框架中直接引入，于服务器端执行，报window对象不存在错误
// 应动态引入，在浏览器端才动态引入
// import storage from 'good-storage'

import {LOCALSTORAGE_KEY} from '../../../config/index'

// id:商家id
// 每个商家存一行
// key:键
// val:值，支持对象等类型
export function saveToLocal(id, key, val) {
  // 判断是浏览器端，才执行存储localStorage代码
  if (process.browser) {
    let strValue = localStorage.getItem(LOCALSTORAGE_KEY)
    let objValue = JSON.parse(strValue)
    
    // 若没有本网站的localStorage
    // 创建一个空对象
    if(!objValue) {
      objValue = {}
    }

    // 若没有此商家的localStorage
    // 创建此商家空对象
    if (!objValue[id]) {
      objValue[id] = {}
    }

    // 若写入值为空，则删除此键
    if(!val) { 
      delete objValue[id][key] 
    }
    else{
      objValue[id][key] = val
    }
    
    strValue = JSON.stringify(objValue)

    localStorage.setItem(LOCALSTORAGE_KEY, strValue)
  }
}

// id:商家id
// key:键
// def:默认值
export function loadFromLocal(id, key, def) {
  // 判断是浏览器端，才执行存储localStorage代码
  if (process.browser) {
    let strValue = localStorage.getItem(LOCALSTORAGE_KEY)
    let objValue = JSON.parse(strValue)
    if(!objValue)
      return def
    if(!(objValue[id]))
      return def
    if(!(objValue[id][key]))
      return def
    return objValue[id][key]
  }
}


// deprecated
// 异步引入good-storage，返回promise对象，太复杂
// let storage
// id:商家id
// export async function saveToLocal(id, key, val) {

//   console.log('进入saveToLocal')

//   // 判断是浏览器端，才执行存储localStorage代码
//   if (process.browser) {
//     if (!storage) {
//       // 同步引入库
//       await import('good-storage').then( ({default:st}) => {
//         storage = st
//       })

//       // 无效
//       // 报错：storage undefined
//       // storage = await import('good-storage')
      
//       // 无效
//       // 报错：storage undefined
//       // storage = await require('good-storage')

//     }

//     const seller = storage.get(LOCALSTORAGE_KEY, {})
//     if (!seller[id]) {
//       seller[id] = {}
//     }
//     seller[id][key] = val
//     storage.set(LOCALSTORAGE_KEY, seller)

//   }

// }

// deprecated
// 异步引入good-storage，返回promise对象，太复杂
// export async function loadFromLocal(id, key, def) {

//   console.log('进入loadFromLocal')

//   // 判断是浏览器端，才执行存储localStorage代码
//   if (process.browser) {
//     if (!storage) {
//       // 同步引入库
//       await import('good-storage').then( ({default:st}) => {
//         storage = st
//       })

//       // 无效
//       // 报错：storage undefined
//       // storage = await import('good-storage')
      
//       // 无效
//       // 报错：storage undefined
//       // storage = await require('good-storage')

//     }

//     const seller = await storage.get(LOCALSTORAGE_KEY, {})
    
//     if (!seller[id]) {
//       return def
//     }
//     return seller[id][key] || def

//   }
// }